﻿var url = "ws://127.0.0.1:22225";
var websocket;
var connected = false;
var isSocketConnect = false;

var openFlagA = false;
var isOpenMainCamera = false;
var MainCanvas;
var MainContext;
var pMainShowStartX = 0;
var pMainShowStartY = 0;
var isMouseDown = false;
var pALastX = 0;
var pALastY = 0;
var pACurrentX = 0;
var pACurrentY = 0;
var MainCamCutMode = 0;

var isOpenAssistCamera = false;
var AssistCanvas;
var AssistContext;
var pAssistShowStartX;
var pAssistShowStartY;




function releaseSocketPro() {
  var data = JSON.stringify({ 'function': 'releaseSocketPro' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}

window.onbeforeunload = function () {

  Cam_Close();  //关闭摄像头
  try {
    releaseSocketPro();   //>>>>>>>>>>>>>>>>.修改的地方>>>>>>>>>>>>>>>
    websocket.close();
    websocket = null;
  }
  catch (ex) {
  }
};

function GetDocumentObj(id) {
  return document.getElementById(id);
}


function toSleep(milliSeconds) {
  var startTime = new Date().getTime();
  while (new Date().getTime() < startTime + milliSeconds);
}


function addEvent(obj, xEvent, fn) {
  if (obj.attachEvent) {
    obj.attachEvent('on' + xEvent, fn);
  } else {
    obj.addEventListener(xEvent, fn, false);
  }
}

function InitCanvas(DivMainBox, mX, mY, mwidth, mheight) {
  if (mwidth != 0 && mheight != 0) {
    MainCanvas = document.createElement("canvas");
    MainCanvas.style.border = "solid 1px #A0A0A0";
    MainCanvas.id = "MainCamCanvas";
    MainCanvas.width = mwidth;
    MainCanvas.height = mheight;
    MainContext = MainCanvas.getContext("2d");
    DivMainBox.appendChild(MainCanvas);      //添加画布
    MainCanvas.onmousedown = MainCanvasMouseDown;
    MainCanvas.onmousemove = MainCanvasMouseMove;
    MainCanvas.onmouseup = MainCanvasMouseUp;
    MainCanvas.onmouseout = MainCanvasMouseOut;
    addEvent(MainCanvas, 'mousewheel', onMouseWheel);
    addEvent(MainCanvas, 'DOMMouseScroll', onMouseWheel);

  }
}


function InitCanvas2(DivMainBox, mX, mY, mwidth, mheight) {
  if (mwidth != 0 && mheight != 0) {
    AssistCanvas = document.createElement("canvas");
    AssistCanvas.style.border = "solid 1px #A0A0A0";
    AssistCanvas.id = "AssistCamCanvas";
    AssistCanvas.width = mwidth;
    AssistCanvas.height = mheight;
    AssistContext = AssistCanvas.getContext("2d");
    DivMainBox.appendChild(AssistCanvas);      //添加画布
  }
}


//*************摄像头操作初始化***************
function Cam_ControlInit(documentObj, mX, mY, mwidth, mheight) {
  ConnectServer(sendMessage, ""); //连接服务器
  InitCanvas(documentObj, mX, mY, mwidth, mheight);
  console.log("InitCanvas ok");
}

function Cam_ControlInit2(documentObj, mX, mY, mwidth, mheight) {
  InitCanvas2(documentObj, mX, mY, mwidth, mheight);
  console.log("InitCanvas ok2");
}



//>>>>>>>>>>>>>>>>.修改的地方>>>>>>>>>>>>>>>
var lockReconnect = false;
var connectCount = 0;
var heartTimerId = -1;

//心跳检测
function heartCheck() {

  clearInterval(heartTimerId);
  heartTimerId = setInterval(function () {
    if (isSocketConnect) {
      Heartbeat();
    }
  }, 6500);
}


//掉线重连
var intervalId = -1;
function reconnect() {

  clearInterval(intervalId);
  intervalId = setInterval(function () {
    if (isSocketConnect == false) {
      Heartbeat();
      console.log("reconnect...")
    }
    console.log("reconnectTimer.........!")
  }, 3000);
}



/**
* 初始化webSocket连接
* @param callback
* @param value
* @constructor
*/
function ConnectServer(callback, value) {

  if ('WebSocket' in window) {
    websocket = new WebSocket(url);
  } else if (window.WebSocket) {
    websocket = new WebSocket(url);
  } else if ('MozWebSocket' in window) {
    websocket = new MozWebSocket(url);
  } else {
    alert("浏览器版本太低！请使用Chrome、Firefox、IE10+浏览器！");
  }

  websocket.onopen = function (e) {
    connected = true;
    heartCheck();
    isSocketConnect = true;
    clearInterval(intervalId);
    Cam_GetDevCount();
  }
  websocket.onclose = function (e) {
    connected = false;
    isSocketConnect = true;
    reconnect();
  }
  websocket.onmessage = function (e) {
    onMessage(e);
  }
  websocket.onerror = function (e) {
    isSocketConnect = true;
    reconnect();
    alert("未连接高拍仪服务，请确保已运行服务端！!!!")
  };

}


/**
* 接收服务器消息
* @param e
*/
function onMessage(e) {
  var Obj = JSON.parse(e.data.replace(/[\r\n]/g, ""));
  //通用回调处理函数 jsonObj
  //var jsonObj=Utf8ToUnicode(Obj);
  cameraProduceMessage(Obj);
}


/**
* 向服务器发送信息的共享方法
* @param jsonStr
*/
function sendMessage(jsonStr) {
  connected ? websocket.send(jsonStr) : alert("未连接websocket服务器，请确保已运行服务端！")
}


/*****************************************************************************************************************/
function cameraProduceMessage(jsonObj) {

  if (jsonObj.functionName == "VideoStream") {

    var bstr = atob(jsonObj.imgBase64Str);
    var n = bstr.length;
    //var rDataArr = new Uint8Array(n);  
    // while (n--) {
    //     rDataArr[n] = bstr.charCodeAt(n) 
    // }
    if (n == jsonObj.width * jsonObj.height * 3) {
      MainContext.clearRect(0, 0, MainCanvas.width, MainCanvas.height);
      var imgData = MainContext.createImageData(jsonObj.width, jsonObj.height);
      var dataNum = 0;
      for (var i = 0; i < imgData.data.length; i += 4) {
        imgData.data[i + 3] = 255;
        imgData.data[i + 0] = bstr.charCodeAt(dataNum + 0);
        imgData.data[i + 1] = bstr.charCodeAt(dataNum + 1);
        imgData.data[i + 2] = bstr.charCodeAt(dataNum + 2);
        imgData.data[i + 3] = 255;
        dataNum = dataNum + 3;
      }
      pMainShowStartX = jsonObj.StartX;
      pMainShowStartY = jsonObj.StartY;
      MainContext.putImageData(imgData, pMainShowStartX, pMainShowStartY);

      if (MainCamCutMode == 2) {
        MainContext.strokeStyle = 'blue';
        MainContext.lineWidth = 2;
        MainContext.beginPath();
        MainContext.rect(pALastX, pALastY, (pACurrentX - pALastX), (pACurrentY - pALastY));
        MainContext.closePath();
        MainContext.stroke();
      }
    }
  }

  else if (jsonObj.functionName == "VideoStream2") {
    var bstr = atob(jsonObj.imgBase64Str);
    var n = bstr.length;
    if (n == jsonObj.width * jsonObj.height * 3) {
      AssistContext.clearRect(0, 0, AssistCanvas.width, AssistCanvas.height);
      var imgData = AssistContext.createImageData(jsonObj.width, jsonObj.height);
      var dataNum = 0;
      for (var i = 0; i < imgData.data.length; i += 4) {
        imgData.data[i + 3] = 255;
        imgData.data[i + 0] = bstr.charCodeAt(dataNum + 0);
        imgData.data[i + 1] = bstr.charCodeAt(dataNum + 1);
        imgData.data[i + 2] = bstr.charCodeAt(dataNum + 2);
        imgData.data[i + 3] = 255;
        dataNum = dataNum + 3;
      }
      pAssistShowStartX = jsonObj.StartX;
      pAssistShowStartY = jsonObj.StartY;
      AssistContext.putImageData(imgData, pAssistShowStartX, pAssistShowStartY);
    }
  }

  else if (jsonObj.functionName == "Cam_GetDevCount") {
    var camName = new Array();
    console.log(jsonObj.DevName);
    camName = jsonObj.DevName.split('|');
    GetDevCountAndNameResultCB(jsonObj.DevCount, camName);
  }

  else if (jsonObj.functionName == "Cam_GetDevResolution") {
    var resArr = new Array();
    resArr = jsonObj.Resolution.split('|');
    GetResolutionResultCB(jsonObj.ResolutionCount, resArr);
  }

  else if (jsonObj.functionName == "Cam_Open") {
    var status = jsonObj.success;
    if (status == 0) {
      isOpenMainCamera = true;
      GetCameraOnOffStatus(0);
    }
    else {
      isOpenMainCamera = false;
      GetCameraOnOffStatus(-1);
    }
  }

  else if (jsonObj.functionName == "Cam_Photo") {
    var filePath = decodeURIComponent(jsonObj.filePath);
    GetCaptrueImgResultCB(jsonObj.success, filePath, jsonObj.base64);
  }

  else if (jsonObj.functionName == "Cam_PhotoB") {
    var filePath = decodeURIComponent(jsonObj.filePath);
    GetCaptrueImgB_ResultCB(jsonObj.success, filePath, jsonObj.base64);
  }

  else if (jsonObj.functionName == "OpenMainAndAssistCam") {
    GetOpenMainAndAssistCamResultCB(jsonObj.success);
  }

  else if (jsonObj.functionName == "Cam_ReadIdCard") {
    if (jsonObj.success == 0) {
      var resultStr = new Array();
      var decodeStr = decodeURIComponent(jsonObj.CardInfo);
      resultStr = decodeStr.split(';');
      GetIdCardInfoResultCB(jsonObj.success, resultStr[0], resultStr[1], resultStr[2], resultStr[3], resultStr[4], resultStr[5], resultStr[6], resultStr[7], resultStr[8], resultStr[9]);
    }
    else {
      GetIdCardInfoResultCB(jsonObj.success, "", "", "", "", "", "", "", "", "", "");
    }
  }

  else if (jsonObj.functionName == "UploadFile") {
    var iRestStr = decodeURIComponent(jsonObj.ResultStr);
    HttpResultCB(jsonObj.success, iRestStr);
  }

  else if (jsonObj.functionName == "Cam_RecogQrBarCodeFromCamera") {
    var iRestStr = decodeURIComponent(jsonObj.content);
    QrBarCodeRecogResultCB(jsonObj.success, iRestStr);
  }

  else if (jsonObj.functionName == "Cam_RecogQrBarCodeFromFile") {
    var iRestStr = decodeURIComponent(jsonObj.content);
    QrBarCodeRecogResultCB(jsonObj.success, iRestStr);
  }

  else if (jsonObj.functionName == "Cam_AddImgFileToPDF") {
    AddImgFileToPDFResultCB(jsonObj.success, jsonObj.base64);
  }

  else if (jsonObj.functionName == "Cam_CombinePDF") {
    PdfCombineResultCB(jsonObj.success, jsonObj.base64);
  }

  else if (jsonObj.functionName == "Cam_AddMergeImageFile") {
    AddMergeImageFileResultCB(jsonObj.success, jsonObj.base64);
  }

  else if (jsonObj.functionName == "Cam_MergeImages") {
    MergeImagesResultCB(jsonObj.success, jsonObj.base64);
  }

  else if (jsonObj.functionName == "GetDeviceLicId") {
    GetDeviceLicIdResultCB(jsonObj.DeviceLicId);
  }

  else if (jsonObj.functionName == "ReadCamLicense") {
    GetLicenseResultCB(jsonObj.LisencesStr);
  }

  else if (jsonObj.functionName == "GetDrives") {
    GetDriveResultCB(jsonObj.DrivesName);
  }

  else if (jsonObj.functionName == "DeleteFile") {
    GetDeleteFileResultCB(jsonObj.success);
  }

  else if (jsonObj.functionName == "OpenMainAssistCam") {
    GetOpenMainAssistCamResultCB(jsonObj.success);
  }

  else if (jsonObj.functionName == "JoinMainAssistCamImage") {
    var filePath = decodeURIComponent(jsonObj.filePath);
    GetJoinMainAssistImageResultCB(jsonObj.success, filePath, jsonObj.base64);
  }

  else if (jsonObj.functionName == "OpenDualCamera") {
    GetOpenDualCameraResultCB(jsonObj.success);
  }

  else if (jsonObj.functionName == "TakeDualCameraPhoto") {
    var filePath1 = decodeURIComponent(jsonObj.filePath1);
    var filePath2 = decodeURIComponent(jsonObj.filePath2);
    GetDualCameraPhotoResultCB(jsonObj.success, filePath1, jsonObj.Abase64, filePath2, jsonObj.Bbase64);
  }

  else if (jsonObj.functionName == "MatPro") {
    console.log("MatPro message...")
    MatProResultCB(jsonObj.success, jsonObj.base64);
  }

  else if (jsonObj.functionName == "Heartbeat") {
    console.log("Heartbeat...")
  }


}

/*****************************************************************************************************************/

function Heartbeat() {
  var data = JSON.stringify({ 'function': 'Heartbeat' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}

//*************获取设备数目***************
function Cam_GetDevCount() {
  var data = JSON.stringify({ 'function': 'Cam_GetDevCount' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}

//***************获取分辨率***************
function Cam_GetDevResolution(iCamNo) {
  var data = JSON.stringify({ 'function': 'Cam_GetDevResolution', 'iCamNo': iCamNo });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}

//*************打开主摄像头***************
function Cam_Open(iCamNo, width, height) {
  var data = JSON.stringify({ 'function': 'Cam_Open', 'iCamNo': iCamNo, 'width': width, 'height': height, 'viewWidth': MainCanvas.width, 'viewHeight': MainCanvas.height });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}

//*************关闭摄像头***************
function Cam_Close() {
  var data = JSON.stringify({ 'function': 'Cam_Close', 'iCamNo': 0 });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}


//*************拍照***************
function Cam_Photo(filePath) {
  if (MainCamCutMode == 2) {
    var rectx, recty, rectw, recth;
    if (pALastX > pACurrentX)
      rectx = pACurrentX;
    else
      rectx = pALastX;
    if (pALastY > pACurrentY)
      recty = pACurrentY;
    else
      recty = pALastY;
    rectw = Math.abs(pACurrentX - pALastX);
    recth = Math.abs(pACurrentY - pALastY);
    Cam_SetManualCutRect(rectx, recty, rectw, recth);  //手动裁剪区域
    toSleep(100);
    //console.log("SetManualCutRect:" + rectx + "," + recty + "," + rectw + "," + recth);
  }
  var data = JSON.stringify({ 'function': 'Cam_Photo', 'filePath': filePath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}


//*************副头拍照***************
function Cam_PhotoB(filePath) {
  var data = JSON.stringify({ 'function': 'Cam_PhotoB', 'filePath': filePath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data)
}

//*************同时打开主副摄像头*************
function OpenMainAndAssistCam() {
  var data = JSON.stringify({ 'function': 'OpenMainAndAssistCam', 'viewWidth': MainCanvas.width, 'viewHeight': MainCanvas.height, 'viewWidth2': AssistCanvas.width, 'viewHeight2': AssistCanvas.height });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************关闭主副摄像头*************
function CloseMainAndAssistCam() {
  var data = JSON.stringify({ 'function': 'CloseMainAndAssistCam' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************放大***************
function Cam_ZoomIn() {
  var data = JSON.stringify({ 'function': 'Cam_ZoomIn' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************缩小***************
function Cam_ZoomOut() {
  var data = JSON.stringify({ 'function': 'Cam_ZoomOut' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************适合大小***************
function Cam_BestSize() {
  var data = JSON.stringify({ 'function': 'Cam_BestSize' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************1:1***************
function Cam_TrueSize() {
  var data = JSON.stringify({ 'function': 'Cam_TrueSize' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************旋转***************
function Cam_Rotate(angle) {
  var data = JSON.stringify({ 'function': 'Cam_Rotate', 'angle': angle });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************左旋***************
function Cam_RotateLeft() {
  var data = JSON.stringify({ 'function': 'Cam_RotateLeft' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************右旋***************
function Cam_RotateRight() {
  var data = JSON.stringify({ 'function': 'Cam_RotateRight' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************对焦***************
function Cam_Focus() {
  var data = JSON.stringify({ 'function': 'Cam_Focus' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置视频属性***************
function Cam_ShowVideoProp() {
  var data = JSON.stringify({ 'function': 'Cam_ShowVideoProp' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置裁剪模式***************
function Cam_SetCutMode(CutMode) {
  MainCamCutMode = CutMode;
  var data = JSON.stringify({ 'function': 'Cam_SetCutMode', 'CutMode': CutMode });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置手动裁切参数***************
function Cam_SetManualCutRect(rectx, recty, rectw, recth) {
  var data = JSON.stringify({ 'function': 'Cam_SetManualCutRect', 'rectx': rectx, 'recty': recty, 'rectw': rectw, 'recth': recth });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置自定义裁切范围***************
function SetCustomArea(iX1, iY1, iX2, iY2) {
  var data = JSON.stringify({ 'function': 'SetCustomArea', 'iX1': iX1, 'iY1': iY1, 'iX2': iX2, 'iY2': iY2 });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************读取身份证信息*************
function Cam_ReadIdCard(cardImgPath) {
  var data = JSON.stringify({ 'function': 'Cam_ReadIdCard', 'cardImgPath': cardImgPath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************上传文件*************
function UploadFile(url, filepath) {
  var data = JSON.stringify({ 'function': 'UploadFile', 'url': url, 'filePath': filepath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}


//*************设置文件格式*************
function Cam_SetFileType(filetype) {
  var data = JSON.stringify({ 'function': 'Cam_SetFileType', 'filetype': filetype });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置JPG图片质量*************
function Cam_SetJpgQuality(val) {
  var data = JSON.stringify({ 'function': 'Cam_SetJpgQuality', 'quality': val });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}


//*************设置色彩模式*************
function Cam_SetColorMode(colorMode) {
  var data = JSON.stringify({ 'function': 'Cam_SetColorMode', 'colorMode': colorMode });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置去黑边*************
function Cam_SetDeleteBlackEdge(flag) {
  var data = JSON.stringify({ 'function': 'Cam_SetDeleteBlackEdge', 'flag': flag });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置去底色*************
function Cam_SetDeleteBgColor(flag) {
  var data = JSON.stringify({ 'function': 'Cam_SetDeleteBgColor', 'flag': flag });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************从摄像头中识别二维码条码*************
function Cam_RecogQrBarCodeFromCamera(type) {
  var data = JSON.stringify({ 'function': 'Cam_RecogQrBarCodeFromCamera', 'type': type });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************从图片文件中识别二维码条码*************
function Cam_RecogQrBarCodeFromFile(type, filepath) {
  var data = JSON.stringify({ 'function': 'Cam_RecogQrBarCodeFromFile', 'type': type, 'filePath': filepath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}


//*************添加要合并的图片到PDF*************
function Cam_AddImgFileToPDF(filepath) {
  var data = JSON.stringify({ 'function': 'Cam_AddImgFileToPDF', 'filePath': filepath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************合并PDF*************
function Cam_CombinePDF(filepath) {
  var data = JSON.stringify({ 'function': 'Cam_CombinePDF', 'filePath': filepath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}


//*************添加图像合并文件*************
function Cam_AddMergeImageFile(filepath) {
  var data = JSON.stringify({ 'function': 'Cam_AddMergeImageFile', 'filePath': filepath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************图像合并*************
function Cam_MergeImages(filepath, dir) {
  var data = JSON.stringify({ 'function': 'Cam_MergeImages', 'filePath': filepath, 'dir': dir });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}


//*************获取驱动盘符*************
function GetDrives() {
  var data = JSON.stringify({ 'function': 'GetDrives' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************删除文件*************
function DeleteFile(filePath) {
  var data = JSON.stringify({ 'function': 'DeleteFile', 'filePath': filePath });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************设置水印*************
function SetWaterMark(isAdd, wType, addTime, wTransp, wPos, wSize, wColor, szInfo) {
  var data = JSON.stringify({ 'function': 'SetWaterMark', 'isAdd': isAdd, 'wType': wType, 'addTime': addTime, 'wTransp': wTransp, 'wPos': wPos, 'wSize': wSize, 'wColor': wColor, 'szInfo': szInfo });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************图像移动*************
function MoveOffsetXY(px, py, xdir, ydir) {
  var data = JSON.stringify({ 'function': 'MoveOffsetXY', 'px': px, 'py': py, 'xdir': xdir, 'ydir': ydir });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}


//*************打开主副摄像头*************
function OpenMainAssistCam() {
  var data = JSON.stringify({ 'function': 'OpenMainAssistCam', 'viewWidth': MainCanvas.width, 'viewHeight': MainCanvas.height, 'viewWidth2': AssistCanvas.width, 'viewHeight2': AssistCanvas.height });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************关闭主副摄像头*************
function CloseMainAssistCam() {
  var data = JSON.stringify({ 'function': 'CloseMainAssistCam' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************主副摄像头合并拍照（拍照画中画）*************
function JoinMainAssistCamImage(filePath, sx, sy, scalew, scaleh, position) {
  var data = JSON.stringify({ 'function': 'JoinMainAssistCamImage', 'filePath': filePath, 'sx': sx, 'sy': sy, 'scalew': scalew, 'scaleh': scaleh, 'position': position });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}



//*************打开双目摄像头*************
function OpenDualCamera() {
  var data = JSON.stringify({ 'function': 'OpenDualCamera', 'viewWidth': MainCanvas.width, 'viewHeight': MainCanvas.height, 'viewWidth2': AssistCanvas.width, 'viewHeight2': AssistCanvas.height });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//*************关闭双目摄像头*************
function CloseDualCamera() {
  var data = JSON.stringify({ 'function': 'CloseDualCamera' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

//******************双目拍照****************
function TakeDualCameraPhoto(filepath1, filepath2) {
  var data = JSON.stringify({ 'function': 'TakeDualCameraPhoto', 'filePath1': filepath1, 'filePath2': filepath2 });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

function GetDeviceLicId() {
  var data = JSON.stringify({ 'function': 'GetDeviceLicId' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

function ReadCamLicense() {
  var data = JSON.stringify({ 'function': 'ReadCamLicense' });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

function SetInchImgType(sizetype) {
  var data = JSON.stringify({ 'function': 'SetInchImgType', 'sizetype': sizetype });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

function SetInchLineType(linetype) {
  var data = JSON.stringify({ 'function': 'SetInchLineType', 'linetype': linetype });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}

function MatPro(inPath, outPath, bgColor) {
  var data = JSON.stringify({ 'function': 'MatPro', 'inPath': inPath, 'outPath': outPath, 'bgColor': bgColor });
  connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}


function onMouseWheel(ev) { /*当鼠标滚轮事件发生时，执行一些操作*/
  var ev = ev || window.event;
  var down = true;
  per = 1;
  down = ev.wheelDelta ? ev.wheelDelta < 0 : ev.detail > 0;
  if (down) {
    Cam_ZoomOut();
  } else {
    Cam_ZoomIn();
  }
  return false;
}

function MainCanvasMouseDown(e) {
  isMouseDown = true;
  pALastX = e.pageX - MainCanvas.offsetLeft;
  pALastY = e.pageY - MainCanvas.offsetTop;
  if (MainCamCutMode == 2) {
    pACurrentX = pALastX;
    pACurrentY = pALastY;
  }
}

function MainCanvasMouseUp(e) {
  isMouseDown = false;
}

function MainCanvasMouseOut(e) {
  isMouseDown = false;
}

function MainCanvasMouseMove(e) {
  if (isMouseDown) {

    if (MainCamCutMode == 2) {
      pACurrentX = e.pageX - MainCanvas.offsetLeft;
      pACurrentY = e.pageY - MainCanvas.offsetTop;

      var rectx, recty, rectw, recth;
      if (pALastX > pACurrentX)
        rectx = pACurrentX;
      else
        rectx = pALastX;
      if (pALastY > pACurrentY)
        recty = pACurrentY;
      else
        recty = pALastY;
      rectw = Math.abs(pACurrentX - pALastX);
      recth = Math.abs(pACurrentY - pALastY);

      Cam_SetManualCutRect(rectx, recty, rectw, recth);  //手动裁剪区域
      //console.log(rectx + "," + recty + "," + rectw + "," + recth);
    }
    else {
      pACurrentX = e.pageX - MainCanvas.offsetLeft;
      pACurrentY = e.pageY - MainCanvas.offsetTop;
      var dx = pACurrentX - pALastX;
      var dy = pACurrentY - pALastY;
      var xdir = 0;
      var ydir = 0;
      if (dx < 0)
        xdir = 0;
      else
        xdir = 1;
      if (dy < 0)
        ydir = 0;
      else
        ydir = 1;
      pALastX = pACurrentX;
      pALastY = pACurrentY;
      MoveOffsetXY(Math.abs(dx), Math.abs(dy), xdir, ydir);
    }
  }
}

/************************************************************************************************************************************************/



